{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.ensemble import GradientBoostingRegressor\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "\n",
    "np.random.seed(1010)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成训练数据\n",
    "n = 40\n",
    "X = np.linspace(0, 3 * np.pi, num=n).reshape(-1, 1)\n",
    "error = np.random.normal(0, 0.1, size=n).reshape(-1, 1)\n",
    "Y = np.abs(np.sin(X)) + error\n",
    "Y = np.where(Y > 0.5, 1, 0)\n",
    "data = np.concatenate((Y, X), axis=1)\n",
    "data = pd.DataFrame(data, columns=['y', 'x'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GradientBoostingRegressor(learning_rate=0.8, max_depth=2, n_estimators=3)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GradientBoostingRegressor</label><div class=\"sk-toggleable__content\"><pre>GradientBoostingRegressor(learning_rate=0.8, max_depth=2, n_estimators=3)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "GradientBoostingRegressor(learning_rate=0.8, max_depth=2, n_estimators=3)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 训练模型\n",
    "model = GradientBoostingRegressor(n_estimators=3, max_depth=2, learning_rate=0.8)\n",
    "model.fit(data[['x']], data['y'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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1XIh8NVtk7q19hulLttQI/hi26y88fbbg29bt80sGEuX5r/tokUwWESqxMVKZ2cnn/jEJwZ8bt68ecybN2+7x88777zsP0lnZycAI0aMyD4/ZswYXnzxxUF/55gxA89QXkhHoEgpZiipNzQMgJNPdvdRyIE4mNyruCOPdPdbgQMxCsehtZYzzzyTzs5ObrzxRtra2obcRzVxHIfzzz8/6GLkze/8Vw5ROBb/8pe/sGjRIi655BJ+8IMf0NHRwc9//vMh91OMctY4XAC8AQwaHID9cIdSAnx4kG1KHhxaWoLftrk5/21L6aKLLmLkyJGcffbZrF27lqamJmKxGCeeeCIPPfQQ1lpGjx7NihUreOaZZ9hzzz3JZDIkk8lsAgdYt24d4I6DXr16NcuXL6ehoYF4PD5oNe2aNWvo7u5ml1122erxH/3oR7wxWLuNZ9q0adELDoUcMAOJx91bqfcbiw1/HzsQpePw8ssv5x//+Af/+Z//ySmnnFLMyxEYY0zJqv7DKkrHIsDMmTP51a9+xVtvvcVNN93EhRdeuF2zyrAN1QEiTDc0qmKHent77fjx4+2xxx671eOPPfaYBew3v/lNu9NOO9l///d/t7vttpv92Mc+Nui+vvWtb9m6ujqbTCbt1VdfbRsaGmxra6sFbFtbm91pp522usXjcQvYG264oWR/T+g7R9aoKB2H999/v43H43bffffV504IReVYHKjT6He/+10L2Pvuu2+HP1/RURXVdFNw2LEbbrjBAvahhx7KPtbZ2Wn32GMPu8suu9iuri6700472f/4j/+wV199tQW2muAm18c+9jG7yy67bPVYR0eHnTx5sv23f/u3rR5/8sknbUNDgz3ppJNK+vcoOIRTVI7DV1991Y4ePdq2tbXZV155pST7lMoK+7GYTqftHnvsYc8666ztnvuf//kfC2w3+mMgCg4KDgPq6+uze+yxhz344IOzj6XTafvhD3/YxuPx7MHl/5P09fXZd7zjHba5udn++c9/3m5/EyZMsCeffPJ2j99zzz3WGGPnzp1rrbV25cqVdsqUKXbPPfe0GzZsKOnfpOAQPlE5DlevXm2nTJli6+rq7F133TXs/UnlReVYPOWUU2w8Ht+qZuGtt96y48ePt2PGjKm+eRyq6abgMLRf/OIXW00akk6n7cc//nEL2B/84AfZ7fx/EmutXbZsmd19991tLBazF198se3x5gt4/vnnLWCvuuqqAX/XpZdeagH7+c9/3u6222521113LcuEOAoO4ROV4/DMM8+0gN1jjz3sBRdcsN3tqaeeKsnvkfKJyrH4+uuv21GjRtlYLGY//OEP289//vN25513trFYzP7ud7/Lax8KDgoO2+nq6rI777yzbWtrs93d3XbVqlX2mGOOsYD92te+ttW2uf8k1rrrQsyaNcsC9lvf+pa11tqzzz7bAvall14a8PctWrTITp8+PTvD2WWXXWY3btxY8r9LwSFconQc5u53oJt/MpLqFKVj0Vq32ewjH/mIHTt2rB01apSdM2eO/de//pX3z4dyAigpr8svv5w333yT//qv/6K5uZm+vj6mT5/OIYccwv/93/9ttW06nd5qbPGkSZN49NFHue222/jEJz7BunXr+NnPfsaRRx7JHnvswcqVK1m7di2LFi3iySef5L777uPZZ59l8uTJnHfeeTz22GOcf/75XHDBBey1117su+++TJ06ldGjRzNr1iyOPvroov+uT37yk3zyk58s+uelsqJ0HL7yyisleU0kGFE6FsEdYXH77bcP+3XJ21CpIkw3VOMwqEwmY++8884B5zPfluM49j3vec+gz3d2dtqLL77Y3nHHHdZaa0899VQL2IaGBnvwwQfbc845x86bN2+r1QGXLl1qr732WnvaaafZ3Xff3RpjLGCfeeaZYf9tEh46DqVa6FjcWqE1DsbaaEzUaIxpmzFjxqZf/epX7LXXXjQHNVFCjVm3bh1vvPEG++67b96Ts/T09LBkyRL23nvvMpdOaoWOQ6kWYTwWe3p6ePHFF/n6179OPB7/YywWu+hPf/rT04Ntr6YKGZaddtqJnXbaqaCfaW5u1oe1lJSOQ6kWtXAs1u14ExERERGXgoOIiIjkLZLBISr9NkRERMrNP2fme+6MVHDwVxPzlzcVERGRofnnzI6Ojry2j1RwePvtt6mvr2ft2rWqdRAREdkBay1r166lt7d3h0t5+yI3qsJf0vS1115j9OjR1NfXD7qkqYiISC2y1pJMJlm7di2bNm1i9erV/lMZoG+on41ccEgkEjQ1NfHGG2/kXe0iIiJSi3LDgzfvRBewZqifiVxwALfWoaGhgdtuu41UKsXo0aNV6yAiIpKjr6+PdDoNQCaTobGxkUwm82osFls91M9FMjgA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Qx/q//6ee2Dt2oG3dRw49dT+7//xD1i9euBtjYHT/RqHVApiMRYsSLF06cDbf+xj7nQp4B7rg20H8JGPgJ/nHn/c/V8azMknu5NYAjz5JLz88uDbnnhi/zXCM8/AUH3z3vc+GDXK/fr558Fvjm9c2f8LfvObOMboM8K37WfEX/+6/Tbt7bDLLl5wCOlQ7mGx1kbiBrQBdtOmTbaW/P73v7dz5861D8+ebS/hfAt2wNtDD/X/zJVXDryNf7vnnv5tf/KTobe9447+bX/1q6G3veWW/m3vuGPoba+/vn/be+8detsrr+zf9uGHh9724ov7t336afexr3zlu3bu3Ll23LjVW217/vn9277yytD7Peec/m1XrBh627PO6t92w4ahtz3ttP5tk8ntnz/qqPvt3Llz7Qc+8Cf7wQ9ufWw4zuD7fc97tt62vX3wbWfP3nrbiRMH33b//bfedvr0wbedNm3rbffff/BtJ0zYetsjjhh82/b2rbc97rjBt43HrbWXXmot2L99+ct27ty59j3vuXfQ7Xt7+/d7+ulDv3cbNvRv++lPD73t8uX9255zztDbvvxy/7Zf//rQ2z79dP+2l1zS//inR1xv586da7/99W9mH9NnhHsb6DNioNu1//cvO3fuXPuTT3/a2nTaht2mTZssYIE2a4c+36rGIeT6+zikaBqbgLfhuOO2387rxwPALrsMvI1vp536v540aeht/SsUcK9ih9p2/Pitf26obSdN6v961Kiht91ll/6v29uH3ta/mgH3ive44yAWawS6eec7t2y11Me0af1fNzcPvd8ZM/q/bmgYetuZM/u/jseH3nbfffu/Nmb7bXfd1X3/J0xowGtyzXrPe2CwWtSDDtr6+2OPhe7uHZcX3CvIdesG3na33bb+/h3vAG+Cve1sW97DDx98VXj/qtl3yCEw2LxF2z6+7d+aKxajv4+Dd+W4226pQd+T3PnV9t136PcutwVg5syht83tojJjxtDb5k70OG3a0NvmdnuaOrV/27G9OwGrIFOXfUyfEa6BPiNyvfIKvPEGrFrbTKwFd1jrli2DH5ARZKy1QZehJIwxbcCmTZs20VZDbf0333wzS5cu5UMf+hD7zpzZX48qebvhhhtYsWIFH/vYx5iRmwBC4M9//jMLFizg6KOP5phjjgm6OOF0001w5pk8+J//ybydd+bAAw/k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\n",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 将模型结果可视化\n",
    "# 为在Matplotlib中显示中文，设置特殊字体\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "# 正确显示负号\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "plt.rcParams.update({'font.size': 15})\n",
    "# 创建一个图形框\n",
    "fig = plt.figure(figsize=(6, 6), dpi=100)\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "ax.scatter(data['x'], data['y'], label='_nolegend_')\n",
    "ax.set_ylim([-0.1, 1.2])\n",
    "styles = ['b--', 'r-.', 'gray']\n",
    "labels = ['深度=1', '深度=2', '深度=3']\n",
    "for l, s, pred in zip(labels, styles, model.staged_predict(data[['x']])):\n",
    "    plt.plot(data[['x']], pred, s, label=l)\n",
    "legend = ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.05),\n",
    "                   ncol=3, fancybox=True, shadow=True)\n",
    "plt.savefig('GBTs.png', dpi=200)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
